package com.beans;

/**
 * @Description //异常错误码
 * @Author gm
 * @Date 2020/1/10
 */
public enum ErrorStatusEnum {

    /**
     * 请求参数中没有任何参数
     */
    USER_NULL(204, "没有任何数据"),

    /**
     * 请求正常返回状态
     */
    OK(200, "OK"),
    /**
     * 验证码错误
     */
    CAPTCHA_ERROR(401, "验证码错误！"),

    /**
     * token无效
     */
    TOKEN_INVALID(402, "token无效，请重新登陆！"),
    /**
     * 用户名或密码错误
     */
    USER_PASSWORD_ERROR(403, "用户名或密码错误"),
    /**
     * 用户不存在
     */
    USER_NONE(404, "用户不存在"),
    /**
     * token为空
     */
    TOKEN_BLANK(405, "token为空！"),
    /**
     * 用户已存在
     */
    USER_EXISTENCE(406, "用户已存在"),
    /**
     * 没有权限
     */
    NOT_AUTHORITY(407, "没有权限！"),
    /**
     * 请求对象不能为空
     */
    REQUEST_OBJECT_IS_NULL_ERROR(408, "请求对象不能为空!"),
    /**
     * 请求参数不能为空
     */
    PARAMS_CANNOT_BE_NULL_ERROR(409, "请求参数不能为空!"),
    /**
     * 非法的请求参数
     */
    PARAMS_ILLEGAL(410, "非法的请求参数!"),
    /**
     * 用户未登陆
     */
    NOT_LOGGED(411, "请先登陆!"),
    /**
     * 用户已被禁用
     */
    USER_IS_DISABLED(412, "用户已被禁用!"),
    /**
     * 未知异常
     */
    UNKNOWN(500, "未知错误,请与管理员联系!"),
    /**
     * 验证码失效
     */
    CAPTCHA_INVALID(501, "验证码失效"),
    /**
     * token过期
     */
    TOKEN_FAILURE(502, "token过期，请重新登陆！"),
    /**
     * 请求参数校验失败
     */
    PARAMS_ILLEGAL_ERROR(503, "参数校验失败!"),
    /**
     * 文件上传出错
     */
    UPLOAD_FILE_ERROR(504, "文件上传出错，请与管理员联系!");

    private final Integer code;
    private final String message;

    ErrorStatusEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer code() {
        return this.code;
    }

    public String message() {
        return this.message;
    }

    /**
     * 根据错误代码获取错误消息
     */
    public static String getMsgByCode(Integer code) {
        if (code == null) {
            return null;
        }
        for (ErrorStatusEnum enums : ErrorStatusEnum.values()) {
            if (enums.code().equals(code)) {
                return enums.message;
            }
        }
        return null;
    }
}
